The design of many modern systems (e.g., complex aircraft design) continue to grow in size and complexity, such that automation of the processes involved are crucial. As a result, attempts have been made to improve the efficiency of the design process through automation. In particular, the area of multidisciplinary optimization (MDO) attempts to improve the design process by exploiting interactions between different disciplines and components. Design flexibility and reusability of interfaces is essential to improving MDO.
Software products for automating design and/or model assembly by wrapping an additional interface layer (e.g., coded logic) around an analysis package (e.g., Analysis Server® by Phoenix Integration and iSight by Engineers Software, Inc.) are known. However, because of the increasing capabilities of computers and the software that runs on them, the design problems that must be addressed by MDO continue to increase in size and complexity. Specifically, the number of design variables, constraints and disciplines for the typical MDO problem is increasing (e.g., problems may include hundreds of design variables). For example, the code required for a scramjet combustion analysis and design may require over 100 inputs to specify geometry, boundary conditions and run option parameters. A user at the vehicle conceptual design stage may only specify a few input variables, with a software code wrapper component created to define all remaining variables as constants or complex functions of the specified inputs. However, if the user decides to use a different set of inputs, new logic and/or functions must be coded into the wrapper for every set of design variable combinations that changes as a result of the new set of inputs. The flexibility of the wrapped code is limited.
Known software products that automate model assembly by wrapping an additional interface layer around analysis packages traditionally provide analysis code automation using scripting languages (e.g., UNIX, PERL, Tcl, etc.). Users must explicitly define the hierarchical relationship between variables (e.g., by writing an intermediate script that calculates dependent input parameters in the proper order).
Still other systems have been developed to provide user-friendly software tools to enable users to automate analysis codes by pointing and clicking on a Graphical User Interface (GUI) or by using a semi-graphical interface, instead of programming in a lower level scripting language. Essentially, these systems attempt to reduce the expertise level required to wrap codes. However, such systems fail to provide design flexibility throughout the entire design process (i.e., from the conceptual design stage through the preliminary and detailed design stages).
Different needs must also be met at each design level. For example, at the conceptual design stage, a typical user of analysis software is a systems engineer with limited knowledge of software code. Thus, few, if any, design variables will be changed. Only default values are required for the majority of input values for the analysis program. These default values are typically chosen to provide good predicted performance, good solution quality and robust solution convergence. However, the detailed design stage may involve a more knowledgeable user that desires to override default values to refine a particular design. Default values or functions may be readily defined for dependent input parameters that are a function of selected input parameters. However, as the analysis problem becomes more complex, some dependent input parameters are functions of one or more other dependent input parameters or variables. Thus, the relationship between parameters and/or variables rapidly becomes complex and extremely difficult to define by a user.
Thus, known systems for wrapping design/analysis software are time-consuming, prone to errors, restrict the flexibility of the wrapped software module because of hard-coded logic and make module maintenance extremely difficult. For design and analysis problems that contain a large number of input parameters, the determination of the order of parameter calculation requires complex evaluation of all variables. Further, customization is required to reuse the wrapped software modules in connection with different design/analysis problems and applications (i.e., extremely limited plug-and-play reusable module support).